The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also correspond to implementations of the claimed inventions.
The present invention relates to systems and methods for improving maintainability of code that displays data to users. The decision to personalize the experience for a user of a web-based application leads to a need to override existing hypertext markup language (HTML) code and cascading style sheet (CSS) specifications for pages.
Conventional approaches to rendering web pages for customers require that changes be implemented to CSS code specifications and existing HTML by appending additional CSS and/or adding HTML style attributes to existing code. A major drawback to adding either CSS or HTML style attributes is the increase in the size of the html code required to deliver the page. As the size increases, it becomes increasingly difficult to cache the page on the client side. A page customization requires the addition of style attribute tags. Because the data is not static, an entire HTML page must be passed from the backend server to the client server when a change is made to the CSS or html.
Browser-specific customizations also require an increase to the size of the CSS and html code used to deliver a page for a user typically.
CSS has become a widely used style sheet language for describing the format and visual representation of a document written in a markup language. CSS facilitates publication of content in multiple presentation formats based on nominal parameters. Almost all web pages use CSS style sheets to describe their presentation. CSS makes possible the separation of document content from document presentation, such as colors, fonts and layout—thus making it possible to render the same page differently depending on the screen size or device on which it is to be viewed. A cascading style sheet consists of a list of rules. A rule or rule-set consists of one or more selectors, and a declaration block. The selector points to the HTML element to be styled. The declaration block contains one or more declarations separated by semicolons. A declaration includes a property name and a value, separated by a colon.
/* p is a selector; color and text-align are declarations */{color:red;text-align:center;}
A CSS Parser inputs CSS source and typically produces an Abstract Syntax Tree (AST) tree—an object-based representation of the contents of the CSS source. This is usually done with the input of a formal grammar, which is the strict, machine-understandable rules for parsing a CSS source.
While there are different tools that accomplish CSS parsing, there is a lack of tools effectively designed to address the issues of performance, maintainability, and selective parsing of code at runtime. The most common technology in use today exacerbates the performance problems by requiring an increase in code size when customizations are implemented—a model that typically is costly in computer resources. Some customizations are not possible because the input grammar to the parser is fixed and not changeable. An opportunity arises to devise methods and structures that efficiently perform CSS parsing at runtime.